<?php
include_once $_SERVER["DOCUMENT_ROOT"].'/service/entite/Entite.php';
include_once $_SERVER["DOCUMENT_ROOT"].'/outils/database/Database.php';
 
class AutreGroupeDAO {
		
	public static function getListeAutreGroupe() {
		$result = Database::getInstance()->executeQueryAndClose("SELECT id, nom,site, disponible FROM autregroupe ORDER BY nom");
		$autresGroupeArray = Array();
		foreach ($result as $row) {
			$autresGroupeArray[] = AutreGroupeDAO::getAutreGroupeFromDatabaseRow($row);
		}
		return $autresGroupeArray;
	}
	
	public static function getListeAutreGroupeDisponible() {
		$result = Database::getInstance()->executeQueryAndClose("SELECT id, nom,site, disponible FROM autregroupe WHERE disponible=true ORDER BY nom");
		$autresGroupeArray = Array();
		foreach ($result as $row) {
			$autresGroupeArray[] = AutreGroupeDAO::getAutreGroupeFromDatabaseRow($row);
		}
		return $autresGroupeArray;
	}
	
	public static function getAutresGroupesCroisesList() {
		$result = Database::getInstance()->executeQueryAndClose("SELECT distinct autreGroupe.id, autreGroupe.nom, autreGroupe.site, autreGroupe.disponible FROM autregroupe autreGroupe, concert_autregroupe lien, concert concert WHERE lien.id_autregroupe = autreGroupe.id and lien.id_concert=concert.id and concert.date < CURRENT_DATE ORDER BY nom");
		$autresGroupeArray = Array();
		foreach ($result as $row) {
			$autresGroupeArray[] = AutreGroupeDAO::getAutreGroupeFromDatabaseRow($row);
		}
		return $autresGroupeArray;
	}
	
	public static function getAutreGroupeFromDatabaseRow($row) {
		$autreGroupeEntite = new AutreGroupeEntite();
		$autreGroupeEntite->id = $row['id'];
		$autreGroupeEntite->nom = $row['nom'];
		$autreGroupeEntite->site = $row['site'];
		$autreGroupeEntite->disponible = $row['disponible'];
		return $autreGroupeEntite;
	}
	
	public static function getAutreGroupeByID($id) {
		$result = Database::getInstance()->executeQueryAndClose("SELECT id, nom,site, disponible FROM autregroupe WHERE id =$id");
		foreach ($result as $row) {
			return AutreGroupeDAO::getAutreGroupeFromDatabaseRow($row);
		}
		return null;
	}
	
	public static function save(AutreGroupeEntite $autreGroupeEntite) {
		if($autreGroupeEntite->id == Entite::getUnpersistedId()) {
			return AutreGroupeDAO::insert($autreGroupeEntite);
		} else {
			return AutreGroupeDAO::update($autreGroupeEntite);
		}
	}
	
	public static function delete(AutreGroupeEntite $autreGroupeEntite) {
		$result = Database::getInstance()->executeUpdateQueryAndClose("DELETE FROM autregroupe WHERE id = $autreGroupeEntite->id") ;
		$autreGroupeEntite->id = Entite::getUnpersistedId();
		return $result;
	}
	
	public static function insert(AutreGroupeEntite $autreGroupeEntite) {
		$nom = mysql_escape_string($autreGroupeEntite->nom);
		$site = mysql_escape_string($autreGroupeEntite->site);
		$result = Database::getInstance()->executeUpdateQueryAndClose("INSERT INTO autregroupe (nom,site, disponible) values ('$nom','$site', $autreGroupeEntite->disponible)") ;
		return $result;
	}
	
	public static function update(AutreGroupeEntite $autreGroupeEntite) {
		$nom = mysql_escape_string($autreGroupeEntite->nom);
		$site = mysql_escape_string($autreGroupeEntite->site);
		$result = Database::getInstance()->executeUpdateQueryAndClose("UPDATE autregroupe SET nom = '$nom', site = '$site', disponible = $autreGroupeEntite->disponible WHERE id = $autreGroupeEntite->id");
		return $result;
	}
}
?>